home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 March / macformat-022.iso / Shareware City / Developers / MW MPW Binaries 1.1.1a2 / mwcPPC / MWCIncludes / TextEdit.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-01-31  |  27.4 KB  |  813 lines  |  [TEXT/MMCC]

  1. /*
  2.     File:        TextEdit.h
  3.  
  4.     Copyright:    © 1984-1993 by Apple Computer, Inc., all rights reserved.
  5.  
  6.     WARNING
  7.     This file was auto generated by the interfacer tool. Modifications
  8.     must be made to the master file.
  9.  
  10. */
  11.  
  12. #ifndef __TEXTEDIT__
  13. #define __TEXTEDIT__
  14.  
  15. #ifndef __QUICKDRAW__
  16. #include <Quickdraw.h>
  17. /*    #include <Types.h>                                            */
  18. /*        #include <ConditionalMacros.h>                            */
  19. /*        #include <MixedMode.h>                                    */
  20. /*            #include <Traps.h>                                    */
  21. /*    #include <QuickdrawText.h>                                    */
  22. /*        #include <IntlResources.h>                                */
  23. #endif
  24.  
  25. typedef struct TERec TERec, *TEPtr, **TEHandle;
  26.  
  27.  
  28. /*
  29.     The following ProcPtrs cannot be written in or called from a high-level 
  30.     language without the help of mixed mode or assembly glue because they 
  31.     use the following parameter-passing conventions:
  32.  
  33.     typedef pascal void (*HighHookProcPtr)(const Rect *r, TEPtr pTE);
  34.     typedef pascal void (*CaretHookProcPtr)(const Rect *r, TEPtr pTE);
  35.  
  36.         In:
  37.             =>     r                        on stack
  38.             =>    pTE                        A3.L
  39.         Out:
  40.             none
  41.  
  42.     typedef pascal Boolean (*EOLHookProcPtr)(char theChar, TEPtr pTE, TEHandle hTE);
  43.  
  44.         In:
  45.             =>     theChar                    D0.B
  46.             =>    pTE                        A3.L
  47.             =>    hTE                        A4.L
  48.         Out:
  49.             <=    Boolean                    Z bit of the CCR
  50.  
  51.     typedef pascal unsigned short (*WidthHookProcPtr)(unsigned short textLen,
  52.      unsigned short textOffset, char *textBufferPtr, TEPtr pTE, TEHandle hTE);
  53.     typedef pascal unsigned short (*TextWidthHookProcPtr)(unsigned short textLen,
  54.      unsigned short textOffset, char *textBufferPtr, TEPtr pTE, TEHandle hTE);
  55.  
  56.         In:
  57.             =>     textLen                    D0.W
  58.             =>    textOffset                D1.W
  59.             =>    textBufferPtr            A0.L
  60.             =>    pTE                        A3.L
  61.             =>    hTE                        A4.L
  62.         Out:
  63.             <=    unsigned short            D1.W
  64.  
  65.     typedef pascal unsigned short (*NWidthHookProcPtr)(unsigned short styleRunLen,
  66.      unsigned short styleRunOffset, short slop, short direction, char *textBufferPtr, 
  67.      short *lineStart, TEPtr pTE, TEHandle hTE);
  68.  
  69.         In:
  70.             =>     styleRunLen                D0.W
  71.             =>    styleRunOffset            D1.W
  72.             =>    slop                    D2.W (low)
  73.             =>    direction                D2.W (high)
  74.             =>    textBufferPtr            A0.L
  75.             =>    lineStart                A2.L
  76.             =>    pTE                        A3.L
  77.             =>    hTE                        A4.L
  78.         Out:
  79.             <=    unsigned short            D1.W
  80.  
  81.     typedef pascal void (*DrawHookProcPtr)(unsigned short textOffset, unsigned short drawLen,
  82.      char *textBufferPtr, TEPtr pTE, TEHandle hTE);
  83.  
  84.         In:
  85.             =>     textOffset                D0.W
  86.             =>    drawLen                    D1.W
  87.             =>    textBufferPtr            A0.L
  88.             =>    pTE                        A3.L
  89.             =>    hTE                        A4.L
  90.         Out:
  91.             none
  92.  
  93.     typedef pascal Boolean (*HitTestHookProcPtr)(unsigned short styleRunLen,
  94.      unsigned short styleRunOffset, unsigned short slop, char *textBufferPtr,
  95.      TEPtr pTE, TEHandle hTE, unsigned short *pixelWidth, unsigned short *charOffset, 
  96.      Boolean *pixelInChar);
  97.  
  98.         In:
  99.             =>     styleRunLen                D0.W
  100.             =>    styleRunOffset            D1.W
  101.             =>    slop                    D2.W
  102.             =>    textBufferPtr            A0.L
  103.             =>    pTE                        A3.L
  104.             =>    hTE                        A4.L
  105.         Out:
  106.             <=    pixelWidth                D0.W (low)
  107.             <=    Boolean                    D0.W (high)
  108.             <=    charOffset                D1.W
  109.             <=    pixelInChar                D2.W
  110.  
  111.     typedef pascal void (*TEFindWordProcPtr)(unsigned short currentPos, short caller, 
  112.      TEPtr pTE, TEHandle hTE, unsigned short *wordStart, unsigned short *wordEnd);
  113.  
  114.         In:
  115.             =>     currentPos                D0.W
  116.             =>    caller                    D2.W
  117.             =>    pTE                        A3.L
  118.             =>    hTE                        A4.L
  119.         Out:
  120.             <=    wordStart                D0.W
  121.             <=    wordEnd                    D1.W
  122.  
  123.     typedef pascal void (*TERecalcProcPtr)(TEPtr pTE, unsigned short changeLength,
  124.        unsigned short *lineStart, unsigned short *firstChar, unsigned short *lastChar);
  125.  
  126.         In:
  127.             =>     pTE                        A3.L
  128.             =>    changeLength            D7.W
  129.         Out:
  130.             <=    lineStart                D2.W
  131.             <=    firstChar                D3.W
  132.             <=    lastChar                D4.W
  133.  
  134.     typedef pascal void (*TEDoTextProcPtr)(TEPtr pTE, unsigned short firstChar, unsigned short lastChar,
  135.      short selector, GrafPtr *currentGrafPort, short *charPosition);
  136.  
  137.         In:
  138.             =>     pTE                        A3.L
  139.             =>    firstChar                D3.W
  140.             =>    lastChar                D4.W
  141.             =>    selector                D7.W
  142.         Out:
  143.             <=    currentGrafPort            A0.L
  144.             <=    charPosition            D0.W
  145.  
  146. */
  147.  
  148. enum  {
  149.     uppHighHookProcInfo            = SPECIAL_CASE_PROCINFO(kSpecialCaseHighHook),
  150.     uppCaretHookProcInfo        = SPECIAL_CASE_PROCINFO(kSpecialCaseCaretHook),
  151.     uppEOLHookProcInfo            = SPECIAL_CASE_PROCINFO(kSpecialCaseEOLHook),
  152.     uppWidthHookProcInfo        = SPECIAL_CASE_PROCINFO(kSpecialCaseWidthHook),
  153.     uppNWidthHookProcInfo        = SPECIAL_CASE_PROCINFO(kSpecialCaseNWidthHook),
  154.     uppTextWidthHookProcInfo    = SPECIAL_CASE_PROCINFO(kSpecialCaseTextWidthHook),
  155.     uppDrawHookProcInfo            = SPECIAL_CASE_PROCINFO(kSpecialCaseDrawHook),
  156.     uppHitTestHookProcInfo        = SPECIAL_CASE_PROCINFO(kSpecialCaseHitTestHook),
  157.     uppTEFindWordProcInfo        = SPECIAL_CASE_PROCINFO(kSpecialCaseTEFindWord),
  158.     uppTERecalcProcInfo            = SPECIAL_CASE_PROCINFO(kSpecialCaseTERecalc),
  159.     uppTEDoTextProcInfo            = SPECIAL_CASE_PROCINFO(kSpecialCaseTEDoText)
  160. };
  161.  
  162. #if USESROUTINEDESCRIPTORS
  163. typedef pascal void (*HighHookProcPtr)(const Rect *r, TEPtr pTE);
  164.  
  165. typedef UniversalProcPtr HighHookUPP;
  166.  
  167. #define CallHighHookProc(userRoutine, r, pTE)  \
  168.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppHighHookProcInfo, (r), (pTE))
  169.  
  170. #define NewHighHookProc(userRoutine)  \
  171.     (HighHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppHighHookProcInfo, GetCurrentISA())
  172.  
  173. typedef pascal void (*CaretHookProcPtr)(const Rect *r, TEPtr pTE);
  174.  
  175. typedef UniversalProcPtr CaretHookUPP;
  176.  
  177. #define CallCaretHookProc(userRoutine, r, pTE)  \
  178.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppCaretHookProcInfo, (r), (pTE))
  179.  
  180. #define NewCaretHookProc(userRoutine)  \
  181.     (CaretHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppCaretHookProcInfo, GetCurrentISA())
  182.  
  183. typedef pascal Boolean (*EOLHookProcPtr)(char theChar, TEPtr pTE, TEHandle hTE);
  184.  
  185. typedef UniversalProcPtr EOLHookUPP;
  186.  
  187. #define CallEOLHookProc(userRoutine, theChar, pTE, hTE)  \
  188.     CallUniversalProc((UniversalProcPtr)(userRoutine), (uppEOLHookProcInfo), (theChar), (pTE), (hTE))
  189.  
  190. #define NewEOLHookProc(userRoutine)  \
  191.     (EOLHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppEOLHookProcInfo, GetCurrentISA())
  192.  
  193. typedef pascal unsigned short (*WidthHookProcPtr)(unsigned short textLen, unsigned short textOffset, char *textBufferPtr, TEPtr pTE, TEHandle hTE);
  194.  
  195. typedef UniversalProcPtr WidthHookUPP;
  196.  
  197. #define CallWidthHookProc(userRoutine, textLen, textOffset, textBufferPtr, pTE, hTE)  \
  198.     CallUniversalProc((UniversalProcPtr)(userRoutine), (uppWidthHookProcInfo), (textLen),  \
  199.     (textOffset), (textBufferPtr), (pTE), (hTE))
  200.  
  201. #define NewWidthHookProc(userRoutine)  \
  202.     (WidthHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppWidthHookProcInfo, GetCurrentISA())
  203.  
  204. typedef pascal unsigned short (*NWidthHookProcPtr)(unsigned short styleRunLen, unsigned short styleRunOffset, short slop, short direction, char *textBufferPtr, short *lineStart, TEPtr pTE, TEHandle hTE);
  205.  
  206. typedef UniversalProcPtr NWidthHookUPP;
  207.  
  208. #define CallNWidthHookProc(userRoutine, styleRunLen, styleRunOffset, slop, direction, textBufferPtr, lineStart, pTE, hTE)  \
  209.     CallUniversalProc((UniversalProcPtr)(userRoutine), (uppNWidthHookProcInfo), (styleRunLen),  \
  210.     (styleRunOffset), (slop), (direction), (textBufferPtr), (lineStart), (pTE), (hTE))
  211.  
  212. #define NewNWidthHookProc(userRoutine)  \
  213.     (NWidthHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppNWidthHookProcInfo, GetCurrentISA())
  214.  
  215. typedef pascal unsigned short (*TextWidthHookProcPtr)(unsigned short textLen, unsigned short textOffset, char *textBufferPtr, TEPtr pTE, TEHandle hTE);
  216.  
  217. typedef UniversalProcPtr TextWidthHookUPP;
  218.  
  219. #define CallTextWidthHookProc(userRoutine, textLen, textOffset, textBufferPtr, pTE, hTE)  \
  220.     CallUniversalProc((UniversalProcPtr)(userRoutine), (uppTextWidthHookProcInfo), (textLen),  \
  221.     (textOffset), (textBufferPtr), (pTE), (hTE))
  222.  
  223. #define NewTextWidthHookProc(userRoutine)  \
  224.     (TextWidthHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTextWidthHookProcInfo, GetCurrentISA())
  225.  
  226. typedef pascal void (*DrawHookProcPtr)(unsigned short textOffset, unsigned short drawLen, char *textBufferPtr, TEPtr pTE, TEHandle hTE);
  227.  
  228. typedef UniversalProcPtr DrawHookUPP;
  229.  
  230. #define CallDrawHookProc(userRoutine, textOffset, drawLen, textBufferPtr, pTE, hTE)  \
  231.     CallUniversalProc((UniversalProcPtr)(userRoutine), (uppDrawHookProcInfo), (textOffset),  \
  232.     (drawLen), (textBufferPtr), (pTE), (hTE))
  233.  
  234. #define NewDrawHookProc(userRoutine)  \
  235.     (DrawHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDrawHookProcInfo, GetCurrentISA())
  236.  
  237. typedef pascal Boolean (*HitTestHookProcPtr)(unsigned short styleRunLen, unsigned short styleRunOffset, unsigned short slop, char *textBufferPtr, TEPtr pTE, TEHandle hTE, unsigned short *pixelWidth, unsigned short *charOffset, Boolean *pixelInChar);
  238.  
  239. typedef UniversalProcPtr HitTestHookUPP;
  240.  
  241. #define CallHitTestHookProc(userRoutine, styleRunLen, styleRunOffset, slop, textBufferPtr, pTE, hTE, pixelWidth, charOffset, pixelInChar)  \
  242.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppHitTestHookProcInfo, (styleRunLen),  \
  243.     (styleRunOffset), (slop), (textBufferPtr), (pTE), (hTE), (pixelWidth),  \
  244.     (charOffset), (pixelInChar))
  245.  
  246. #define NewHitTestHookProc(userRoutine)  \
  247.     (HitTestHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppHitTestHookProcInfo, GetCurrentISA())
  248.  
  249. typedef pascal void (*TEFindWordProcPtr)(unsigned short currentPos, short caller, TEPtr pTE, TEHandle hTE, unsigned short *wordStart, unsigned short *wordEnd);
  250.  
  251. typedef UniversalProcPtr TEFindWordUPP;
  252.  
  253. #define CallTEFindWordProc(userRoutine, currentPos, caller, pTE, hTE, wordStart, wordEnd)  \
  254.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppTEFindWordProcInfo, (currentPos),  \
  255.     (caller), (pTE), (hTE), (wordStart), (wordEnd))
  256.  
  257. #define NewTEFindWordProc(userRoutine)  \
  258.     (TEFindWordUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTEFindWordProcInfo, GetCurrentISA())
  259.  
  260. typedef pascal void (*TERecalcProcPtr)(TEPtr pTE, unsigned short changeLength, unsigned short *lineStart, unsigned short *firstChar, unsigned short *lastChar);
  261.  
  262. typedef UniversalProcPtr TERecalcUPP;
  263.  
  264. #define CallTERecalcProc(userRoutine, pTE, changeLength, lineStart, firstChar, lastChar)  \
  265.     CallUniversalProc((UniversalProcPtr) (userRoutine), uppTERecalcProcInfo, (pTE),     \
  266.     (changeLength), (lineStart), (firstChar), (lastChar))
  267.  
  268. #define NewTERecalcProc(userRoutine)  \
  269.     (TERecalcUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTERecalcProcInfo, GetCurrentISA())
  270.  
  271. typedef pascal void (*TEDoTextProcPtr)(TEPtr pTE, unsigned short firstChar, unsigned short lastChar, short selector, GrafPtr *currentGrafPort, short *charPosition);
  272.  
  273. typedef UniversalProcPtr TEDoTextUPP;
  274.  
  275. #define CallTEDoTextProc(userRoutine, pTE, firstChar, lastChar, selector, currentGrafPort, charPosition)  \
  276.     CallUniversalProc((UniversalProcPtr) (userRoutine), uppTEDoTextProcInfo, (pTE),     \
  277.     (firstChar), (lastChar), (selector), (currentGrafPort), (charPosition))
  278.  
  279. #define NewTEDoTextProc(userRoutine)  \
  280.     (TEDoTextUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTEDoTextProcInfo, GetCurrentISA())
  281.  
  282. #else
  283. typedef ProcPtr HighHookUPP;
  284.  
  285. #define NewHighHookProc(userRoutine)  \
  286.     (HighHookUPP)(userRoutine)
  287.  
  288. typedef ProcPtr CaretHookUPP;
  289.  
  290. #define NewCaretHookProc(userRoutine)  \
  291.     (CaretHookUPP)(userRoutine)
  292.  
  293. typedef ProcPtr EOLHookUPP;
  294.  
  295. #define NewEOLHookProc(userRoutine)  \
  296.     (EOLHookUPP)(userRoutine)
  297.  
  298. typedef ProcPtr WidthHookUPP;
  299.  
  300. #define NewWidthHookProc(userRoutine)  \
  301.     (WidthHookUPP)(userRoutine)
  302.  
  303. typedef ProcPtr NWidthHookUPP;
  304.  
  305. #define NewNWidthHookProc(userRoutine)  \
  306.     (NWidthHookUPP)(userRoutine)
  307.  
  308. typedef ProcPtr TextWidthHookUPP;
  309.  
  310. #define NewTextWidthHookProc(userRoutine)  \
  311.     (TextWidthHookUPP)(userRoutine)
  312.  
  313. typedef ProcPtr DrawHookUPP;
  314.  
  315. #define NewDrawHookProc(userRoutine)  \
  316.     (DrawHookUPP)(userRoutine)
  317.  
  318. typedef ProcPtr HitTestHookUPP;
  319.  
  320. #define NewHitTestHookProc(userRoutine)  \
  321.     (HitTestHookUPP)(userRoutine)
  322.  
  323. typedef ProcPtr TEFindWordUPP;
  324.  
  325. #define NewTEFindWordProc(userRoutine)  \
  326.     (TEFindWordUPP)(userRoutine)
  327.  
  328. typedef ProcPtr TERecalcUPP;
  329.  
  330. #define NewTERecalcProc(userRoutine)  \
  331.     (TERecalcUPP)(userRoutine)
  332.  
  333. typedef ProcPtr TEDoTextUPP;
  334.  
  335. #define NewTEDoTextProc(userRoutine)  \
  336.     (TEDoTextUPP)(userRoutine)
  337.  
  338. #endif
  339.  
  340. enum  {
  341. /* Justification (word alignment) styles */
  342.     teJustLeft                    = 0,
  343.     teJustCenter                = 1,
  344.     teJustRight                    = -1,
  345.     teForceLeft                    = -2,
  346. /* new names for the Justification (word alignment) styles */
  347.     teFlushDefault                = 0,                            /*flush according to the line direction */
  348.     teCenter                    = 1,                            /*center justify (word alignment) */
  349.     teFlushRight                = -1,                            /*flush right for all scripts */
  350.     teFlushLeft                    = -2,                            /*flush left for all scripts */
  351. /* Set/Replace style modes */
  352.     fontBit                        = 0,                            /*set font*/
  353.     faceBit                        = 1,                            /*set face*/
  354.     sizeBit                        = 2,                            /*set size*/
  355.     clrBit                        = 3,                            /*set color*/
  356.     addSizeBit                    = 4,                            /*add size mode*/
  357.     toggleBit                    = 5,                            /*set faces in toggle mode*/
  358.     toglBit                        = 5,                            /* obsolete.  use toggleBit */
  359. /* TESetStyle/TEContinuousStyle modes */
  360.     doFont                        = 1,                            /* set font (family) number*/
  361.     doFace                        = 2,                            /*set character style*/
  362.     doSize                        = 4,                            /*set type size*/
  363.     doColor                        = 8,                            /*set color*/
  364.     doAll                        = 15,                            /*set all attributes*/
  365.     addSize                        = 16                            /*adjust type size*/
  366. };
  367.  
  368. enum  {
  369.     doToggle                    = 32,                            /*toggle mode for TESetStyle*/
  370. /* offsets into TEDispatchRec */
  371.     EOLHook                        = 0,                            /*[UniversalProcPtr] TEEOLHook*/
  372.     DRAWHook                    = 4,                            /*[UniversalProcPtr] TEWidthHook*/
  373.     WIDTHHook                    = 8,                            /*[UniversalProcPtr] TEDrawHook*/
  374.     HITTESTHook                    = 12,                            /*[UniversalProcPtr] TEHitTestHook*/
  375.     nWIDTHHook                    = 24,                            /*[UniversalProcPtr] nTEWidthHook*/
  376.     TextWidthHook                = 28,                            /*[UniversalProcPtr] TETextWidthHook*/
  377. /* selectors for TECustomHook */
  378.     intEOLHook                    = 0,                            /*TEIntHook value*/
  379.     intDrawHook                    = 1,                            /*TEIntHook value*/
  380.     intWidthHook                = 2,                            /*TEIntHook value*/
  381.     intHitTestHook                = 3,                            /*TEIntHook value*/
  382.     intNWidthHook                = 6,                            /*TEIntHook value for new version of WidthHook*/
  383.     intTextWidthHook            = 7,                            /*TEIntHook value for new TextWidthHook*/
  384. /* feature or bit definitions for TEFeatureFlag */
  385.     teFAutoScroll                = 0,                            /*00000001b*/
  386.     teFAutoScr                    = 0,                            /*00000001b  obsolete. use teFAutoScroll*/
  387.     teFTextBuffering            = 1,                            /*00000010b*/
  388.     teFOutlineHilite            = 2,                            /*00000100b*/
  389.     teFInlineInput                = 3,                            /*00001000b */
  390.     teFUseTextServices            = 4,                            /*00010000b */
  391. /* action for the new "bit (un)set" interface, TEFeatureFlag */
  392.     TEBitClear                    = 0,
  393.     TEBitSet                    = 1                                /*set the selector bit*/
  394. };
  395.  
  396. enum  {
  397.     TEBitTest                    = -1,                            /*no change; just return the current setting*/
  398.     teBitClear                    = 0,
  399.     teBitSet                    = 1,                            /*set the selector bit*/
  400.     teBitTest                    = -1,                            /*no change; just return the current setting*/
  401. /*constants for identifying the routine that called FindWord */
  402.     teWordSelect                = 4,                            /*clickExpand to select word*/
  403.     teWordDrag                    = 8,                            /*clickExpand to drag new word*/
  404.     teFromFind                    = 12,                            /*FindLine called it ($0C)*/
  405.     teFromRecal                    = 16,                            /*RecalLines called it ($10)      obsolete */
  406. /*constants for identifying TEDoText selectors */
  407.     teFind                        = 0,                            /*TEDoText called for searching*/
  408.     teHighlight                    = 1,                            /*TEDoText called for highlighting*/
  409.     teDraw                        = -1,                            /*TEDoText called for drawing text*/
  410.     teCaret                        = -2                            /*TEDoText called for drawing the caret*/
  411. };
  412.  
  413.  
  414. /*
  415.     WordBreakProcs and TEClickLoopProcs cannot be written in or called from a 
  416.     high-level language without the help of mixed mode or assembly glue 
  417.     because they use the following parameter-passing conventions:
  418.  
  419.     typedef pascal Boolean (*WordBreakProcPtr)(Ptr text, short charPos);
  420.  
  421.         In:
  422.             =>     text            A0.L
  423.             =>     charPos            D0.W
  424.         Out:
  425.             <=    Boolean            Z bit of the CCR
  426.             
  427.     typedef pascal Boolean (*TEClickLoopProcPtr)(TEPtr pTE);
  428.  
  429.         In:
  430.             =>    pTE                A3.L
  431.         Out:
  432.             <=     Boolean            D0.B
  433. */
  434.  
  435. enum  {
  436.     uppWordBreakProcInfo        = kRegisterBased|REGISTER_RESULT_LOCATION(kCCRegisterZBit)|REGISTER_ROUTINE_PARAMETER(1,kRegisterA0,kFourByteCode)|REGISTER_ROUTINE_PARAMETER(2,kRegisterD0,kTwoByteCode),
  437.     uppTEClickLoopProcInfo        = kRegisterBased|RESULT_SIZE(kOneByteCode)|REGISTER_RESULT_LOCATION(kRegisterD0)|REGISTER_ROUTINE_PARAMETER(1,kRegisterA3,kFourByteCode)
  438. };
  439.  
  440. #if USESROUTINEDESCRIPTORS
  441. typedef pascal Boolean (*WordBreakProcPtr)(Ptr text, short charPos);
  442.  
  443. typedef UniversalProcPtr WordBreakUPP;
  444.  
  445. #define CallWordBreakProc(userRoutine, text, charPos)  \
  446.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppWordBreakProcInfo, (text), (charPos))
  447.  
  448. #define NewWordBreakProc(userRoutine)  \
  449.     (WordBreakUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppWordBreakProcInfo, GetCurrentISA())
  450.  
  451. typedef pascal Boolean (*TEClickLoopProcPtr)(TEPtr pTE);
  452.  
  453. typedef UniversalProcPtr TEClickLoopUPP;
  454.  
  455. #define CallTEClickLoopProc(userRoutine, pTE)  \
  456.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppTEClickLoopProcInfo, (pTE))
  457.  
  458. #define NewTEClickLoopProc(userRoutine)  \
  459.     (TEClickLoopUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTEClickLoopProcInfo, GetCurrentISA())
  460.  
  461. #else
  462. typedef ProcPtr WordBreakUPP;
  463.  
  464. #define NewWordBreakProc(userRoutine)  \
  465.     (WordBreakUPP)(userRoutine)
  466.  
  467. typedef ProcPtr TEClickLoopUPP;
  468.  
  469. #define NewTEClickLoopProc(userRoutine)  \
  470.     (TEClickLoopUPP)(userRoutine)
  471.  
  472. #endif
  473.  
  474. #if defined(powerc) || defined (__powerc)
  475. #pragma options align=mac68k
  476. #endif
  477. struct TERec {
  478.     Rect                        destRect;
  479.     Rect                        viewRect;
  480.     Rect                        selRect;
  481.     short                        lineHeight;
  482.     short                        fontAscent;
  483.     Point                        selPoint;
  484.     short                        selStart;
  485.     short                        selEnd;
  486.     short                        active;
  487.     WordBreakUPP                wordBreak;
  488.     TEClickLoopUPP                clickLoop;
  489.     long                        clickTime;
  490.     short                        clickLoc;
  491.     long                        caretTime;
  492.     short                        caretState;
  493.     short                        just;
  494.     short                        teLength;
  495.     Handle                        hText;
  496. /* short recalBack;        */
  497. /* short recalLines;    */
  498.     long                        hDispatchRec;                    /* added to replace recalBack & recalLines.  it's a handle anyway */
  499.     short                        clikStuff;
  500.     short                        crOnly;
  501.     short                        txFont;
  502.     Style                        txFace;                            /*txFace is unpacked byte*/
  503.     char                        filler;
  504.     short                        txMode;
  505.     short                        txSize;
  506.     GrafPtr                        inPort;
  507.     HighHookUPP                    highHook;
  508.     CaretHookUPP                caretHook;
  509.     short                        nLines;
  510.     short                        lineStarts[16001];
  511. };
  512. #if defined(powerc) || defined(__powerc)
  513. #pragma options align=reset
  514. #endif
  515.  
  516. typedef char Chars[32001];
  517.  
  518. typedef char *CharsPtr, **CharsHandle;
  519.  
  520. #if defined(powerc) || defined (__powerc)
  521. #pragma options align=mac68k
  522. #endif
  523. struct StyleRun {
  524.     short                        startChar;                        /*starting character position*/
  525.     short                        styleIndex;                        /*index in style table*/
  526. };
  527. #if defined(powerc) || defined(__powerc)
  528. #pragma options align=reset
  529. #endif
  530.  
  531. typedef struct StyleRun StyleRun;
  532.  
  533. #if defined(powerc) || defined (__powerc)
  534. #pragma options align=mac68k
  535. #endif
  536. struct STElement {
  537.     short                        stCount;                        /*number of runs in this style*/
  538.     short                        stHeight;                        /*line height*/
  539.     short                        stAscent;                        /*font ascent*/
  540.     short                        stFont;                            /*font (family) number*/
  541.     Style                        stFace;                            /*character Style*/
  542.     char                        filler;                            /*stFace is unpacked byte*/
  543.     short                        stSize;                            /*size in points*/
  544.     RGBColor                    stColor;                        /*absolute (RGB) color*/
  545. };
  546. #if defined(powerc) || defined(__powerc)
  547. #pragma options align=reset
  548. #endif
  549.  
  550. typedef struct STElement STElement;
  551.  
  552. typedef STElement TEStyleTable[1777], *STPtr, **STHandle;
  553.  
  554. #if defined(powerc) || defined (__powerc)
  555. #pragma options align=mac68k
  556. #endif
  557. struct LHElement {
  558.     short                        lhHeight;                        /*maximum height in line*/
  559.     short                        lhAscent;                        /*maximum ascent in line*/
  560. };
  561. #if defined(powerc) || defined(__powerc)
  562. #pragma options align=reset
  563. #endif
  564.  
  565. typedef struct LHElement LHElement;
  566.  
  567.  
  568. /* ARRAY [0..8000] OF LHElement */
  569.  
  570. typedef LHElement LHTable[8001], *LHPtr, **LHHandle;
  571.  
  572. #if defined(powerc) || defined (__powerc)
  573. #pragma options align=mac68k
  574. #endif
  575. struct ScrpSTElement {
  576.     long                        scrpStartChar;                    /*starting character position*/
  577.     short                        scrpHeight;                        /*starting character position*/
  578.     short                        scrpAscent;
  579.     short                        scrpFont;
  580.     Style                        scrpFace;                        /*unpacked byte*/
  581.     char                        filler;                            /*scrpFace is unpacked byte*/
  582.     short                        scrpSize;
  583.     RGBColor                    scrpColor;
  584. };
  585. #if defined(powerc) || defined(__powerc)
  586. #pragma options align=reset
  587. #endif
  588.  
  589. typedef struct ScrpSTElement ScrpSTElement;
  590.  
  591.  
  592. /* ARRAY [0..1600] OF ScrpSTElement */
  593.  
  594. typedef ScrpSTElement ScrpSTTable[1601];
  595.  
  596. #if defined(powerc) || defined (__powerc)
  597. #pragma options align=mac68k
  598. #endif
  599. struct StScrpRec {
  600.     short                        scrpNStyles;                    /*number of styles in scrap*/
  601.     ScrpSTTable                    scrpStyleTab;                    /*table of styles for scrap*/
  602. };
  603. #if defined(powerc) || defined(__powerc)
  604. #pragma options align=reset
  605. #endif
  606.  
  607. typedef struct StScrpRec StScrpRec;
  608.  
  609. typedef StScrpRec *StScrpPtr, **StScrpHandle;
  610.  
  611. #if defined(powerc) || defined (__powerc)
  612. #pragma options align=mac68k
  613. #endif
  614. struct NullStRec {
  615.     long                        teReserved;                        /*reserved for future expansion*/
  616.     StScrpHandle                nullScrap;                        /*handle to scrap style table*/
  617. };
  618. #if defined(powerc) || defined(__powerc)
  619. #pragma options align=reset
  620. #endif
  621.  
  622. typedef struct NullStRec NullStRec;
  623.  
  624. typedef NullStRec *NullStPtr, **NullStHandle;
  625.  
  626. #if defined(powerc) || defined (__powerc)
  627. #pragma options align=mac68k
  628. #endif
  629. struct TEStyleRec {
  630.     short                        nRuns;                            /*number of style runs*/
  631.     short                        nStyles;                        /*size of style table*/
  632.     STHandle                    styleTab;                        /*handle to style table*/
  633.     LHHandle                    lhTab;                            /*handle to line-height table*/
  634.     long                        teRefCon;                        /*reserved for application use*/
  635.     NullStHandle                nullStyle;                        /*Handle to style set at null selection*/
  636.     StyleRun                    runs[8001];                        /*ARRAY [0..8000] OF StyleRun*/
  637. };
  638. #if defined(powerc) || defined(__powerc)
  639. #pragma options align=reset
  640. #endif
  641.  
  642. typedef struct TEStyleRec TEStyleRec;
  643.  
  644. typedef TEStyleRec *TEStylePtr, **TEStyleHandle;
  645.  
  646. #if defined(powerc) || defined (__powerc)
  647. #pragma options align=mac68k
  648. #endif
  649. struct TextStyle {
  650.     short                        tsFont;                            /*font (family) number*/
  651.     Style                        tsFace;                            /*character Style*/
  652.     char                        filler;                            /*tsFace is unpacked byte*/
  653.     short                        tsSize;                            /*size in point*/
  654.     RGBColor                    tsColor;                        /*absolute (RGB) color*/
  655. };
  656. #if defined(powerc) || defined(__powerc)
  657. #pragma options align=reset
  658. #endif
  659.  
  660. typedef struct TextStyle TextStyle;
  661.  
  662. typedef TextStyle *TextStylePtr, **TextStyleHandle;
  663.  
  664. typedef short TEIntHook;
  665.  
  666. #ifdef __cplusplus
  667. extern "C" {
  668. #endif
  669.  
  670. #if USESCODEFRAGMENTS
  671. extern pascal Handle TEScrapHandle(void);
  672. extern pascal long TEGetScrapLength(void);
  673. #else
  674. #define TEScrapHandle() (* (Handle*) 0xAB4)
  675.  
  676. #define TEGetScrapLength() ((long) * (unsigned short *) 0x0AB0)
  677.  
  678. #endif
  679.  
  680. extern pascal void TEInit(void)
  681.  ONEWORDINLINE(0xA9CC);
  682. extern pascal TEHandle TENew(const Rect *destRect, const Rect *viewRect)
  683.  ONEWORDINLINE(0xA9D2);
  684. extern pascal void TEDispose(TEHandle hTE)
  685.  ONEWORDINLINE(0xA9CD);
  686. extern pascal void TESetText(const void *text, long length, TEHandle hTE)
  687.  ONEWORDINLINE(0xA9CF);
  688. extern pascal CharsHandle TEGetText(TEHandle hTE)
  689.  ONEWORDINLINE(0xA9CB);
  690. extern pascal void TEIdle(TEHandle hTE)
  691.  ONEWORDINLINE(0xA9DA);
  692. extern pascal void TESetSelect(long selStart, long selEnd, TEHandle hTE)
  693.  ONEWORDINLINE(0xA9D1);
  694. extern pascal void TEActivate(TEHandle hTE)
  695.  ONEWORDINLINE(0xA9D8);
  696. extern pascal void TEDeactivate(TEHandle hTE)
  697.  ONEWORDINLINE(0xA9D9);
  698. extern pascal void TEKey(short key, TEHandle hTE)
  699.  ONEWORDINLINE(0xA9DC);
  700. extern pascal void TECut(TEHandle hTE)
  701.  ONEWORDINLINE(0xA9D6);
  702. extern pascal void TECopy(TEHandle hTE)
  703.  ONEWORDINLINE(0xA9D5);
  704. extern pascal void TEPaste(TEHandle hTE)
  705.  ONEWORDINLINE(0xA9DB);
  706. extern pascal void TEDelete(TEHandle hTE)
  707.  ONEWORDINLINE(0xA9D7);
  708. extern pascal void TEInsert(const void *text, long length, TEHandle hTE)
  709.  ONEWORDINLINE(0xA9DE);
  710. extern pascal void TESetAlignment(short just, TEHandle hTE)
  711.  ONEWORDINLINE(0xA9DF);
  712. extern pascal void TEUpdate(const Rect *rUpdate, TEHandle hTE)
  713.  ONEWORDINLINE(0xA9D3);
  714. extern pascal void TETextBox(const void *text, long length, const Rect *box, short just)
  715.  ONEWORDINLINE(0xA9CE);
  716. extern pascal void TEScroll(short dh, short dv, TEHandle hTE)
  717.  ONEWORDINLINE(0xA9DD);
  718. extern pascal void TESelView(TEHandle hTE)
  719.  ONEWORDINLINE(0xA811);
  720. extern pascal void TEPinScroll(short dh, short dv, TEHandle hTE)
  721.  ONEWORDINLINE(0xA812);
  722. extern pascal void TEAutoView(Boolean fAuto, TEHandle hTE)
  723.  ONEWORDINLINE(0xA813);
  724. extern pascal void TECalText(TEHandle hTE)
  725.  ONEWORDINLINE(0xA9D0);
  726. extern pascal short TEGetOffset(Point pt, TEHandle hTE)
  727.  ONEWORDINLINE(0xA83C);
  728. extern pascal Point TEGetPoint(short offset, TEHandle hTE)
  729.  THREEWORDINLINE(0x3F3C, 0x0008, 0xA83D);
  730. extern pascal void TEClick(Point pt, Boolean fExtend, TEHandle h)
  731.  ONEWORDINLINE(0xA9D4);
  732. extern pascal TEHandle TEStyleNew(const Rect *destRect, const Rect *viewRect)
  733.  ONEWORDINLINE(0xA83E);
  734. extern pascal void TESetStyleHandle(TEStyleHandle theHandle, TEHandle hTE)
  735.  THREEWORDINLINE(0x3F3C, 0x0005, 0xA83D);
  736. extern pascal TEStyleHandle TEGetStyleHandle(TEHandle hTE)
  737.  THREEWORDINLINE(0x3F3C, 0x0004, 0xA83D);
  738. extern pascal void TEGetStyle(short offset, TextStyle *theStyle, short *lineHeight, short *fontAscent, TEHandle hTE)
  739.  THREEWORDINLINE(0x3F3C, 0x0003, 0xA83D);
  740. extern pascal void TEStylePaste(TEHandle hTE)
  741.  THREEWORDINLINE(0x3F3C, 0x0000, 0xA83D);
  742. extern pascal void TESetStyle(short mode, const TextStyle *newStyle, Boolean fRedraw, TEHandle hTE)
  743.  THREEWORDINLINE(0x3F3C, 0x0001, 0xA83D);
  744. extern pascal void TEReplaceStyle(short mode, const TextStyle *oldStyle, const TextStyle *newStyle, Boolean fRedraw, TEHandle hTE)
  745.  THREEWORDINLINE(0x3F3C, 0x0002, 0xA83D);
  746. extern pascal StScrpHandle TEGetStyleScrapHandle(TEHandle hTE)
  747.  THREEWORDINLINE(0x3F3C, 0x0006, 0xA83D);
  748. extern pascal void TEStyleInsert(const void *text, long length, StScrpHandle hST, TEHandle hTE)
  749.  THREEWORDINLINE(0x3F3C, 0x0007, 0xA83D);
  750. extern pascal long TEGetHeight(long endLine, long startLine, TEHandle hTE)
  751.  THREEWORDINLINE(0x3F3C, 0x0009, 0xA83D);
  752. extern pascal Boolean TEContinuousStyle(short *mode, TextStyle *aStyle, TEHandle hTE)
  753.  THREEWORDINLINE(0x3F3C, 0x000A, 0xA83D);
  754. extern pascal void TEUseStyleScrap(long rangeStart, long rangeEnd, StScrpHandle newStyles, Boolean fRedraw, TEHandle hTE)
  755.  THREEWORDINLINE(0x3F3C, 0x000B, 0xA83D);
  756. extern pascal void TECustomHook(TEIntHook which, UniversalProcPtr *addr, TEHandle hTE)
  757.  THREEWORDINLINE(0x3F3C, 0x000C, 0xA83D);
  758. extern pascal long TENumStyles(long rangeStart, long rangeEnd, TEHandle hTE)
  759.  THREEWORDINLINE(0x3F3C, 0x000D, 0xA83D);
  760. extern pascal short TEFeatureFlag(short feature, short action, TEHandle hTE)
  761.  THREEWORDINLINE(0x3F3C, 0x000E, 0xA83D);
  762. extern pascal void TESetScrapLength(long length);
  763. extern pascal OSErr TEFromScrap(void);
  764. extern pascal OSErr TEToScrap(void);
  765. extern pascal void TESetClickLoop(TEClickLoopUPP clikProc, TEHandle hTE);
  766. extern pascal void TESetWordBreak(WordBreakUPP wBrkProc, TEHandle hTE);
  767. extern void teclick(Point *pt, Boolean fExtend, TEHandle h);
  768. #if OLDROUTINENAMES
  769. #define TESetJust(just, hTE) TESetAlignment(just, hTE)
  770.  
  771. #define TextBox(text, length, box, just) TETextBox(text, length, box, just)
  772.  
  773. #define TEStylNew(destRect, viewRect) TEStyleNew(destRect, viewRect)
  774.  
  775. #define SetStylHandle(theHandle, hTE) TESetStyleHandle(theHandle, hTE)
  776.  
  777. #define SetStyleHandle(theHandle, hTE) TESetStyleHandle (theHandle, hTE)
  778.  
  779. #define GetStylHandle(hTE) TEGetStyleHandle(hTE)
  780.  
  781. #define GetStyleHandle(hTE) TEGetStyleHandle(hTE)
  782.  
  783. #define TEStylPaste(hTE) TEStylePaste(hTE)
  784.  
  785. #define GetStylScrap(hTE) TEGetStyleScrapHandle(hTE)
  786.  
  787. #define GetStyleScrap(hTE) TEGetStyleScrapHandle(hTE)
  788.  
  789. #define SetStylScrap(rangeStart, rangeEnd, newStyles, redraw, hTE)  \
  790.     TEUseStyleScrap(rangeStart, rangeEnd, newStyles, redraw, hTE)
  791.  
  792. #define SetStyleScrap(rangeStart, rangeEnd, newStyles, redraw, hTE)  \
  793.     TEUseStyleScrap(rangeStart, rangeEnd, newStyles, redraw, hTE)
  794.  
  795. #define TEStylInsert(text, length, hST, hTE) TEStyleInsert(text, length, hST, hTE)
  796.  
  797. #define TESetScrapLen(length) TESetScrapLength(length)
  798.  
  799. #define TEGetScrapLen() TEGetScrapLength()
  800.  
  801. #define SetClikLoop(clikProc, hTE) TESetClickLoop(clikProc, hTE)
  802.  
  803. #define SetWordBreak(wBrkProc, hTE) TESetWordBreak(wBrkProc, hTE)
  804.  
  805. #endif
  806.  
  807. #ifdef __cplusplus
  808. }
  809. #endif
  810.  
  811. #endif
  812.  
  813.